package com.hopu.controller;

import com.hopu.entity.MyEmp;
import com.hopu.service.Login.LoginService;
import com.hopu.util.HouseResult;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

/**
 * @Package: com.hopu.controller
 * @ClassName: LoginController
 * @Author: xiaoBao
 * @CreateTime: 2020/10/26 3:55
 * @Description: 【管理平台登录表现层】：实现登录验证、
 */
@Controller("loginController")  /**定义控制层*/
public class LoginController {
    @Resource(name = "loginServiceImple")  /**引入LoginService服务层*/
    private LoginService loginService;


    /**
     * checkEname 检查账号是否存在
     * @param emp	用户名
     * @return 返回验证结果给前台Ajax
     */
    @RequestMapping("findByEname.do")
    @ResponseBody
    public HouseResult<MyEmp> checkEname(MyEmp emp) {
        //测试是否成功接收到前台的数据
        System.out.println("【账号】："+emp.getEname());

        //调用Service层业务逻辑：检查用户输入的账号是否存在，并将数据返回给前台Ajax。
        return loginService.checkMyEname(emp);
    }


    /**
     * execute	【登录验证（表现层）】
     * @param emp	以实体类数据绑定的形式，接收前台的“用户名”和“密码”；
     * @param session	引入HttpSession会话，将业务层返回的result设置进Session中；
     * @return	将数据返回给前台Ajax。
     */
    @RequestMapping("login.do")
    @ResponseBody
    public HouseResult<MyEmp> execute(MyEmp emp, HttpSession session) {	//在形参中声明两个变量用于接收前台数据
        //将result的值设为空
        HouseResult<MyEmp> result = null;

        //输出测试是否成功接收到前台数据
        System.out.println("【员工登录消息】：" + emp.getEname() + "，" + emp.getEpsw());

        //如果接受到的值不为空，那么执行业务逻辑；
        if (emp != null) {
            //调用Service层登录验证业务
            result = loginService.checkMyEmpByEnameAndEpsw(emp);

            //通过Session技术绑定值
            session.setAttribute("login.do_success", result);
            return result;
        }

        //返回数据给前台Ajax
        return result;
    }
}
